
from string import Template 
import os.path

class ModuleMaker:
    
    @staticmethod
    def make_from_string(pattern:str,module_key:str="module_key",module:str="module",handlers_dir:str="handlers2")->str:
        try:
            template = Template(pattern)
            # template.delimiter = "|"
            result = template.substitute(module_key=module_key,module=module)
            file_name = f"{handlers_dir}\\{module}.py"
            if os.path.isfile(file_name): raise Exception(f"Модуль {module} уже существует. Имя модуля должно быть уникальным.")
            with open(file_name,mode="w",encoding="utf-8") as f: f.write(result)
            return f"Модуль {file_name} создан."
        except: raise
        
    @staticmethod
    def make_from_file(pattern_path:str,module_key:str="module_key",module:str="module",handlers_dir:str="handlers2")->str:
        try:
            if not os.path.isfile(pattern_path): raise Exception(f"Шаблона '{pattern_path}' не существует.")
            with open(pattern_path,mode="r",encoding="utf-8") as f:
                src = f.read()
                return ModuleMaker.make_from_string(src,module_key,module,handlers_dir)
        except: raise